<?php
/**
 * 微信公众平台 PHP SDK 示例文件
 *
 * @author NetPuter <netputer@gmail.com>
 */

  require('./Wechat.php');
  require('./menu.php');
  require('../init.php');
  /**
   * 微信公众平台演示类
   */
  class MyWechat extends Wechat {

    /**
     * 用户关注时触发，回复「欢迎关注」
     *
     * @return void
     */
    protected function onSubscribe() {
      
      $this->responseText("欢迎关注小菜鸟的微信公共帐号 \n 我的博客地址http://www.xiaocainiao.net \n 回复【list】 查看最新的文章\n 回复【default】随机查看文章");

    }

    /**
     * 用户已关注时,扫描带参数二维码时触发，回复二维码的EventKey (测试帐号似乎不能触发)
     *
     * @return void
     */
    protected function onScan() {
      $this->responseText('二维码的EventKey：' . $this->getRequest('EventKey'));
    }

    /**
     * 用户取消关注时触发
     *
     * @return void
     */
    protected function onUnsubscribe() {
      $this->responseText('「悄悄的我走了，正如我悄悄的来；我挥一挥衣袖，不带走一片云彩。」');

      // 「悄悄的我走了，正如我悄悄的来；我挥一挥衣袖，不带走一片云彩。」
    }

    /**
     * 上报地理位置时触发,回复收到的地理位置
     *
     * @return void
     */
    protected function onEventLocation() {
      $this->responseText('收到了位置推送：' . $this->getRequest('Latitude') . ',' . $this->getRequest('Longitude'));
    }

    /**
     * 收到文本消息时触发，回复收到的文本消息内容
     *
     * @return void
     */
    protected function onText() {
      $txt = trim($this->getRequest('content'));
    
      switch($txt) {
            case 'list':
              $this->showList();
            break;
            case 'default':
              $this->showDefault();
            break;
            default:
              $this->responseText('暂时无法识别你的指令，目前只支持list、default两种种哦');
          }

      /*if(intval($txt)) {
          $this->responseText('暂时无法识别你的指令');
          //$this->showOneNovel();
      } else {
          switch(trim($this->getRequest('content'))) {
            case 'list':
              $this->showList();
            break;
            case 'default':
              $this->showDefault();
            break;
            default:
              $this->responseText('暂时无法识别你的指令，目前只支持list一种哦');
          }
      }*/
    }

    /**
     * 收到图片消息时触发，回复由收到的图片组成的图文消息
     *
     * @return void
     */
    protected function onImage() {
      $items = array(
        new NewsResponseItem('标题一', '描述一', $this->getRequest('picurl'), $this->getRequest('picurl')),
        new NewsResponseItem('标题二', '描述二', $this->getRequest('picurl'), $this->getRequest('picurl')),
      );

      $this->responseNews($items);
    }

    /**
     * 收到地理位置消息时触发，回复收到的地理位置
     *
     * @return void
     */
    protected function onLocation() {
      $num = 1 / 0;
      // 故意触发错误，用于演示调试功能

      $this->responseText('收到了位置消息：' . $this->getRequest('location_x') . ',' . $this->getRequest('location_y'));
    }

    /**
     * 收到链接消息时触发，回复收到的链接地址
     *
     * @return void
     */
    protected function onLink() {
      $this->responseText('收到了链接：' . $this->getRequest('url'));
    }

    /**
     * 收到语音消息时触发，回复语音识别结果(需要开通语音识别功能)
     *
     * @return void
     */
    protected function onVoice() {
      $this->responseText('收到了语音消息,识别结果为：' . $this->getRequest('Recognition'));
    }

    /**
     * 收到自定义菜单消息时触发，回复菜单的EventKey
     *
     * @return void
     */
    protected function onClick() {
        $action = $this->getRequest('EventKey');
        switch($action) {
            case 'list':
                $this->showList();
            break;
            case 'default':
                $this->showDefault();
            default;
                $this->responseText('收到了未知类型消息：');
      }
    }

    /**
     * 收到未知类型消息时触发，回复收到的消息类型
     *
     * @return void
     */
    protected function onUnknown() {
      $this->responseText('收到了未知类型消息：' . $this->getRequest('msgtype'));
    }

    /**
     * 显示列表
     * 
     */
    private function showList()
    {
      $cache = Cache::getInstance();

      $newLogs_cache = $cache->readCache('newlog');
        
      $item = array();
      $test = '';

      foreach($newLogs_cache as $key => $value) {
        if($key >= 5) {
          continue;
        }
        $picid = rand(1, 4);
        $picUrl = "http://static.xiaocainiao.net/img/php00". $picid. ".jpg";
        $id = "http://www.xiaocainiao.net/m/?post=". $value['gid'];
        $item[] = new NewsResponseItem('【NO.'. $value['gid'] .'】'. $value['title'], '', $picUrl, $id);
      }

      $this->responseNews($item);
    }

    /**
     * 随机文章
     * 
     */
    private function showDefault()
    {
      $Log_Model = new Log_Model();
      $randLogs = $Log_Model->getRandLog(5);
        
      foreach($randLogs as $value){
        $picid = rand(1, 4);
        $picUrl = "http://static.xiaocainiao.net/img/php00". $picid. ".jpg";
        $id = "http://www.xiaocainiao.net/m/?post=". $value['gid'];
        $item[] = new NewsResponseItem('【NO.'. $value['gid'] .'】'. $value['title'], '', $picUrl, $id);
      }

      $this->responseNews($item);

    }

    /**
     *  查看一篇文章
     *  
     */
    /*private function showOneNovel()
    {
        $this->responseText('收到了未知类型消息：' . $this->getRequest('content'));
        $log = new Log_Model();
        $onelog = $log->getOneLogForHome($gid);
        $picid = rand(1, 4);
        $picUrl = "http://static.xiaocainiao.net/img/php00". $picid. ".jpg";
        $id = "http://www.xiaocainiao.net/m/?post=". $onelog['logid'];
        $item = array(
              new NewsResponseItem('【NO.'. $$onelog['logid'] .'】'. $onelog['log_title'], '', $picUrl, $id);
          );
         $this->responseNews($item);
    } */

  }

  $wechat = new MyWechat('weixin', TRUE);
  $wechat->run();
